-- enough_equip
-- created by panyl
-- 装备是否足够问题

return {
    fetch = function(id)
        return true;
    end,

    calc_bonus = function(id)
        local args = PinocchioM.query_quetion(id, "bonus_args") or {};

        -- 检查当前装备是否满了，不考虑冒险系
        local equips = table.copy(ME.user.equipments);
        if type(equips[EQUIP_TYPE_RISKER]) == 'table' and #equips[EQUIP_TYPE_RISKER] > 0 then
            equips[EQUIP_TYPE_RISKER] = nil;
        end

        local cond = PinocchioM.query_quetion(id, "condition");
        local itemList = {};
        local rand;
        if sizeof(equips) < cond then
            -- 有空闲装备位置，奖励某位置2~3阶普通装备
            local emptyParts = {};
            for index = 1, cond do
                if not equips[index] then
                    emptyParts[#emptyParts + 1] = index;
                end
            end

            -- 随机某个空闲位置
            rand = DungeonM.getRandSeed("pinocchio");
            local part = emptyParts[rand % #emptyParts + 1];

            -- 符合条件的所有装备
            local allEquips = table.append(ItemM.getEquipByRank(2), ItemM.getEquipByRank(3));
            for _, equipId in ipairs(allEquips) do
                if EquipM.query(equipId, "type") == part then
                    itemList[#itemList + 1] = equipId;
                end
            end
        else
            -- 否则，奖励随机小红帽食物
            itemList = args["random_bonus"];
        end

        -- 随机一个
        rand = DungeonM.getRandSeed("pinocchio");
        local itemId = itemList[rand % #itemList + 1];

        return {1, itemId, 1}
    end,

    check_answer = function(id, index)
        local cond = PinocchioM.query_quetion(id, "condition");

        if type(cond) ~= "number" or cond <= 0 then
            return 1;
        end

        -- 已经装备数量，不考虑冒险系装备
        local equips = ME.user.equipments;
        local equip_num = sizeof(equips);
        if type(equips[EQUIP_TYPE_RISKER]) == 'table' and #equips[EQUIP_TYPE_RISKER] > 0 then
            equip_num = equip_num - 1;
        end

        -- 是否选择了正确的选项
        local res = iif(equip_num >= cond, 1, 2)

        return iif(res == index, 1, 0);
    end,
};
